/*
 * porEbeno3D.java
 *
 * Created on 17 grudzień 2007, 21:50
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package pla.bib;

/**
 *
 * @author arkadiusz
 * klasa porownuje dwie plaszczyzny
 */
public class porEbeno3D {

  int p;

  /** Creates a new instance of porEbeno3D */
  public porEbeno3D(int p) {
    this.p = p;
  }

  
  public boolean estasSmilaj(Ebeno3D eb1, Ebeno3D eb2){
   // if(true)return false;
    double P = (100 - this.p) / 100.0;

    WektorD3D ABC = new WektorD3D(eb1.A, eb1.B, eb1.C);
    ABC = ABC.normu();
    WektorD3D abc = (WektorD3D) new WektorD3D(eb2.A, eb2.B, eb2.C).normu();
    WektorD3D N = (WektorD3D) ABC.razyWD(abc);
    double n = N.normo();

    // "d" to srednio kwadratowy blad roznicy miedzy parametrami
    // pierwszej plaszczyzny a drguie.
    // czyli pierwiastek z sumy roznic kwadratow odpowienich paramatrow
    // im parametr "d" blizszy zeru tym plaszczyzny bardzie 
    // sa podobne do siebie.
    double d =
            (eb1.A - eb2.A) * (eb1.A - eb2.A) 
            + (eb1.B - eb2.B) * (eb1.B - eb2.B) 
            + (eb1.C - eb2.C) * (eb1.C - eb2.C) 
            + (eb1.D - eb2.D) * (eb1.D - eb2.D);
    d = Math.sqrt(d);

    if (n > P //&& d < P  
            ) {
      return false;
      
    }

    // nei rownolegle plaszczyzny nie podobne
    return false;

  
  }
}

/*************************************************************************
 * ***********************************************************************
  @Override
  public int compare(Ebeno3D eb1, Ebeno3D eb2) {

    double P = (100 - this.p) / 100.0;

    WektorD3D ABC = new WektorD3D(eb1.A, eb1.B, eb1.C);
    ABC = ABC.normu();
    WektorD3D abc = (WektorD3D) new WektorD3D(eb2.A, eb2.B, eb2.C).normu();
    WektorD3D N = (WektorD3D) ABC.razyWD(abc);
    double n = N.normo();

    // "d" to srednio kwadratowy blad roznicy miedzy parametrami
    // pierwszej plaszczyzny a drguie.
    // czyli pierwiastek z sumy roznic kwadratow odpowienich paramatrow
    // im parametr "d" blizszy zeru tym plaszczyzny bardzie 
    // sa podobne do siebie.
    double d =
            (eb1.A - eb2.A) * (eb1.A - eb2.A) 
            + (eb1.B - eb2.B) * (eb1.B - eb2.B) 
            + (eb1.C - eb2.C) * (eb1.C - eb2.C) 
            + (eb1.D - eb2.D) * (eb1.D - eb2.D);
    d = Math.sqrt(d);

    if (n > P //&& d < P  
            ) {
      return 1;
    }

    // nei rownolegle plaszczyzny nie podobne
    return -1;

  }
  */